package test.algorithm;

import org.junit.Test;

/**
 * 汉诺塔游戏
 * 
 * @author 延晓磊
 *
 * @since 2020年7月25日
 */
public class HanoiTower {

	@Test
	public void test() {
		hanoiTower(8,'A','B','C');
	}
	
	/**
	 * 汉诺塔
	 * 
	 * @param num	盘数
	 * @param a		柱A：起始柱
	 * @param b		柱B
	 * @param c		柱C：目标柱
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年7月25日
	 */
	public static void hanoiTower(int num, char a, char b, char c) {
		if (num == 1) {
			// 如果有1个盘：A > C
			System.out.printf("第%s个盘：%s -> %s\r\n", num, a, c);
		}else {
			// 如果有多个盘：n-1盘 A > B，1盘 A > C，n-1盘 B > C
			hanoiTower(num-1, a, c, b);
			System.out.printf("第%s个盘：%s -> %s\r\n", num, a, c);
			hanoiTower(num-1, b, a, c);
		}
	}
	 
}

